package cn.ac.jaas.isc.vegetable.common.transaction.rewrite;

import cn.ac.jaas.isc.vegetable.common.core.constant.ServiceNameConstants;
import com.codingapi.tx.config.service.TxManagerTxUrlService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.stereotype.Service;

/**
 * @author 张高昌
 * @date 2022/4/30 11:13
 * @description: 功能描述
 */
@Slf4j
@Service
@AllArgsConstructor
public class TxManagerTxUrlServiceImpl implements TxManagerTxUrlService {

    private final LoadBalancerClient loadBalancerClient;

    @Override
    public String getTxUrl() {
        ServiceInstance serviceInstance = loadBalancerClient.choose(ServiceNameConstants.TX_MANAGER);
        String host = serviceInstance.getHost();
        Integer port = serviceInstance.getPort();
        String url = String.format("http://%s:%s/tx/manager/", host, port);
        log.info("tm.manager.url -> {}", url);
        return url;
    }
}
